#include <stdio.h>
#include <stdlib.h>

#define ListSize 10
// 假设使用Int 类型作为数据类型

// 定义顺序表
typedef struct SeqList
{
    int data[ListSize];
    int length;
    /* data */
} list;

//指定位置插入一个数据
void InsertList(list *a, int index, int val)
{
    // 判断插入的位置小于1 或者比在
    if (index < 1 || index > a->length + 1)
    {
        printf("position error");
        return;
    }
    //插入越界
    if (index > ListSize)
    {
        printf("overflow");
        return;
    }
    //循环移动数组
    for (int i = a->length - 1; i > index; i--)
    {
        a->data[i + 1] = a->data[i];
    }
    a->data[index] = val;
    a->length++;
}

/**
 * 删除指定位置的一个元素
 * */
int deleteList(list *table, int index)
{
    /**
     * 不能越界
     * */
    if (index > table->length || index < 1)
    {
        printf("index error");
        exit(0);
    }
    /**
     * 循环删除
     * */
    int result = table->data[index];

    for (int i = index; i <= table->length; i++)
    {
        table->data[i - 1] = table->data[i];
    }
    table->length--;

    return result;
}

/**
 * 打印当前顺序表
 * */
void printList(list *table)
{
    for (int i = 0; i < table->length; i++)
    {
        printf("list index=%d,val=%d \n", i, table->data[i]);
    }
}

//初始化一个
list init()
{
    list tab;

    tab.length = 0;
    /**
     * 初始放入三个元素
     * */
    for (int i = 0; i < 5; i++)
    {
        tab.data[i] = i;
        tab.length++;
    }
    return tab;
}

int main()
{
    list table = init();
    list *p = &table;
    //指定位置插入一个元素
    InsertList(p, 3, 11);
    //打印有序表
    printList(p);
    //删除一个元素
    printf("------------------\n");
    deleteList(p, 4);
    //打印当前数组
    printList(p);
}